package com.boot.config.captcha;

import java.util.Properties;

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;

/**
 * @Auther: zhengshunzhi
 * @Date: 2018/9/11 15:11
 * @Description: 验证码配置类
 */
@Component
public class KaptchaConfig {
    @Bean
    public DefaultKaptcha getDefaultKaptcha() {
        com.google.code.kaptcha.impl.DefaultKaptcha defaultKaptcha = new com.google.code.kaptcha.impl.DefaultKaptcha();
        Properties properties = new Properties();
        // 图片边框
        properties.setProperty("kaptcha.border", "yes");
        // 边框颜色
        properties.setProperty("kaptcha.border.color", "105,179,90");
        // 字体颜色
        properties.setProperty("kaptcha.textproducer.font.color", "black");
        // 图片宽
        properties.setProperty("kaptcha.image.width", "110");
        // 图片高
        properties.setProperty("kaptcha.image.height", "40");
        // 字体大小
        properties.setProperty("kaptcha.textproducer.font.size", "40");
        // session key
        properties.setProperty("kaptcha.session.key", "code");
        // 验证码长度
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        // 干扰实现类
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.DefaultNoise");
        //干扰颜色，合法值： r,g,b 或者 white,black,blue.
        properties.setProperty("kaptcha.noise.color", "blue");
        //阴影
        properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy");
        //背景实现类
        properties.setProperty("kaptcha.background.impl", "com.google.code.kaptcha.impl.DefaultBackground");
        //文字渲染器
        properties.setProperty("kaptcha.word.impl", "com.google.code.kaptcha.text.impl.DefaultWordRenderer");
        //session.date
        properties.setProperty("kaptcha.session.date", "KAPTCHA_SESSION_DATE");
        //文本实现类
        properties.setProperty("kaptcha.textproducer.impl", "com.google.code.kaptcha.text.impl.DefaultTextCreator");
        //图片实现类
        properties.setProperty("kaptcha.producer.impl", "com.google.code.kaptcha.impl.DefaultKaptcha");
        //	边框厚度，合法值：>0 只能是整数
        properties.setProperty("kaptcha.border.thickness", "1");
        // 字体
        properties.setProperty("kaptcha.textproducer.font.names", "彩云,宋体,楷体,微软雅黑");

        Config config = new Config(properties);
        defaultKaptcha.setConfig(config);

        return defaultKaptcha;
    }
}
//        Constant	                                     描述	默认值
//        kaptcha.border	                             图片边框，合法值：yes , no	yes
//        kaptcha.border.color	                         边框颜色，合法值： r,g,b (and optional alpha) 或者 white,black,blue,black
//        kaptcha.border.thickness	                     边框厚度，合法值：>0	1
//        kaptcha.image.width	                         图片宽	200
//        kaptcha.image.height	                         图片高	50
//        kaptcha.producer.impl	                         图片实现类	com.google.code.kaptcha.impl.DefaultKaptcha
//        kaptcha.textproducer.impl	                     文本实现类	com.google.code.kaptcha.text.impl.DefaultTextCreator
//        kaptcha.textproducer.char.string	             文本集合，验证码值从此集合中获取	abcde2345678gfynmnpwx
//        kaptcha.textproducer.char.length	             验证码长度	5
//        kaptcha.textproducer.font.names	             字体	Arial, Courier
//        kaptcha.textproducer.font.size	             字体大小	40px.
//        kaptcha.textproducer.font.color	             字体颜色，合法值： r,g,b  或者 white,black,blue.	black
//        kaptcha.textproducer.char.space	             文字间隔	2
//        kaptcha.noise.impl	                         干扰实现类	com.google.code.kaptcha.impl.DefaultNoise
//        kaptcha.noise.color	                         干扰颜色，合法值： r,g,b 或者 white,black,blue.	black

//        kaptcha.obscurificator.impl	                 图片样式：
//        水纹                                           com.google.code.kaptcha.impl.WaterRipple
//        鱼眼                                           com.google.code.kaptcha.impl.FishEyeGimpy
//        阴影                                           com.google.code.kaptcha.impl.ShadowGimpy

//        kaptcha.background.impl	                     背景实现类	com.google.code.kaptcha.impl.DefaultBackground
//        kaptcha.background.clear.from	                 背景颜色渐变，开始颜色	light grey
//        kaptcha.background.clear.to	                 背景颜色渐变，结束颜色	white
//        kaptcha.word.impl	                             文字渲染器	com.google.code.kaptcha.text.impl.DefaultWordRenderer
//        kaptcha.session.key	                         session key	KAPTCHA_SESSION_KEY
//        kaptcha.session.date	                         session date	KAPTCHA_SESSION_DATE


/*验证码不但可以使用图形还可以使用语音，比如SimpleCaptcha就可以，kaptcha扩展了SimpleCaptcha，等等都可以使用语音验证码，官方中有提供此类的demo可以下载部署在tomcat上使用

        使用Java生成验证码的库有很多，比如以下列表中的举例

        Java验证码生成库 JCaptcha
        Struts验证码插件 JCaptcha4Struts2
        Java图形验证码 SimpleCaptcha
        Java验证码 kaptcha
        Java验证码 patchca
        Java验证码生成库 imageRandom
        Java验证码库 iCaptcha
        Java图片验证库SkewPassImage
        Java 验证码 Cage*/


